home *** CD-ROM | disk | FTP | other *** search
/ CD Classic 39 / CD CLASSIC #39 (1998).iso / EMPRESA / visio / Vistdstd / Install / Data.Z / Vaddon.H < prev    next >
C/C++ Source or Header  |  1997-11-11  |  3KB  |  96 lines

  1. /*    VADDON.H
  2.  *  Copyright (C) 1996-1997 Visio Corporation. All rights reserved.
  3.  *
  4.  *    Abstract
  5.  *        Provides an easy-to-subclass VAddon class.
  6.  *
  7.  */
  8.  
  9. //    You, the user of VAddon, will derive a class from VAddon, override the
  10. //    Run method and instantiate it...
  11. //
  12. //    Simplest case example is:
  13. //    ==================================================================
  14. //    #define ATTS (VAO_AOATTS_ISACTION | VAO_AOATTS_HASABOUT | VAO_AOATTS_WAITCRSR)
  15. //
  16. //    class MyAddon : public VAddon {
  17. //    public:
  18. //        MyAddon(LPCTSTR pName):VAddon(ATTS, VAO_ENABLEALWAYS, 0, 0, pName) { };
  19. //        VAORC Run(LPVAOV2LSTRUCT pV2L) { MessageBeep(0xFFFFFFFF); return VAORC_SUCCESS; };
  20. //    };
  21. //
  22. //    MyAddon addon1("Addon 1");
  23. //    MyAddon addon2("Addon 2");
  24. //    ==================================================================
  25.  
  26. #ifndef _VADDON_H
  27. #define _VADDON_H
  28.  
  29. #include "vao.h"
  30. #include <tchar.h>
  31.  
  32.  
  33. #define INVALID_RESOURCE_ID    ((UINT)(-1))
  34.  
  35.  
  36. class VAddon {
  37.  
  38. public:
  39.     //    The one and only meaningful constructor:
  40.     VAddon(
  41.         //    VAO_ORDINAL assigned automagically by this base class...
  42.         VAO_ATTS atts,                    // Attributes
  43.         VAO_ENABMASK enabMask,            // Enabling policy
  44.         VAO_INVOKEMASK invokeOnMask,
  45.         VAO_NOTIFYMASK notifyOnMask,
  46.         LPCTSTR lpName,
  47.         UINT uIDName= INVALID_RESOURCE_ID);
  48.  
  49.     virtual ~VAddon();
  50.  
  51.     virtual VAORC IsEnabled(LPVAOV2LSTRUCT pV2L);        //    optionally overridden
  52.     virtual VAORC Run(LPVAOV2LSTRUCT pV2L)= 0;            //    the pure virtual which MUST be overridden
  53.     virtual VAORC About(LPVAOV2LSTRUCT pV2L);            //    optionally overridden
  54.     virtual VAORC Help(LPVAOV2LSTRUCT pV2L);            //    optionally overridden
  55.     virtual VAORC Load(WORD wVersion, LPVOID p);        //    optionally overridden
  56.     virtual VAORC Unload(WORD wParam, LPVOID p);        //    optionally overridden
  57.     virtual VAORC KillSession(LPVAOV2LSTRUCT pV2L);        //    optionally overridden
  58.  
  59.     virtual HINSTANCE GetInstance(long nFlags= 0L);        //    optionally overridden
  60.  
  61.     VAOREGSTRUCT *GetRegStructPtr(void);
  62.     inline WORD GetIndex(void) { return m_wIndex; };
  63.     inline TCHAR *GetName(void) { return m_pName; };
  64.  
  65.     static VAddon *FindAddon(WORD wOrdinal);
  66.     static VAddon *GetFirst(void);
  67.     static VAddon *GetNext(VAddon *pCurrent);        //    returns NULL when no more...
  68.     static void SetInstance(HINSTANCE hInstance);
  69.  
  70. protected:
  71.     UINT            m_uIDName;            //    either INVALID_RESOURCE_ID or the ID of
  72.                                         //    of a string resource in the instance
  73.                                         //    GetInstance(); used to get the name from
  74.                                         //    a resource in VAddon::Load
  75.  
  76. private:
  77.     WORD            m_wIndex;            //    VAO_ORDINAL
  78.     TCHAR            m_pName[VAOMAXAONAME];
  79.     VAOREGSTRUCT    m_reg;
  80.     VAddon            *m_pNext;
  81.  
  82.     static VAddon        *m_pFirst;
  83.     static VAddon        *m_pLast;
  84.     static WORD            m_wNextIndex;
  85.     static HINSTANCE    m_hInstance;
  86.  
  87. private:
  88.     //    Unimplemented stuff to prevent compiler from generating default versions
  89.     //    and to disallow end-user use:
  90.     VAddon();
  91.     VAddon(const VAddon &other);
  92.     operator=(const VAddon &other);
  93. };
  94.  
  95. #endif    //    _VADDON_H
  96.